//
//  StatusViewModel.swift
//  weibo
//
//  Created by Qing on 2017/7/25.
//  Copyright © 2017年 成哥哥. All rights reserved.
//

import UIKit


/// 微博视图模型 - 处理单条微博的业务逻辑
class StatusViewModel: CustomStringConvertible {
    
    /// 微博的模型数据
    var status: Statuses
    
     /// 用户头像url
     var userProfileUrl: URL? {
        
        return URL(string: (status.user?.profile_image_url) ?? "")!
    }
    
    /// 用户默认头像
    var userDefaultImage: UIImage? {
    
        return UIImage(named: "userIcom")
    }
    
    /// 用户会员等级 0-7 , 0为没有图标等级
    var userMbankImage: UIImage? {
        
        if (status.user?.mbrank)! > 0 && (status.user?.mbrank)! < 8 {
            
            return UIImage(named: "avatar_\((status.user?.mbrank)!)")
        }
    
        return nil
    }
    
    /// 认证图标  - 0：微博个人认证，3、7：官方认证，-1：未认证
    var userVerifiedIcom: UIImage? {
        switch (status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "vip-0")
        case 3, 7: return UIImage(named: "vip-3")
        default:
            return UIImage(named: "")
        }
    }
    
    /// 略缩图： - 存储性属性,需要在init实例化。
    var thumbnail_pic: [URL]?
    
    /// 构造函数
    init(status: Statuses) {
        
        self.status = status
    
        //1.判断是否有图片，如果有，数组下标则会大于0
        if (status.pic_urls?.count)! > 0 {
            
            //2.存储性属性第1步定义名称， 第2步分配存储空间。
            thumbnail_pic = [URL]()
            
            //3.遍历数组，提取成员。 如果数组是可选，则不允许遍历，因为数组是依据下标来遍历的。
            for dict in status.pic_urls! {
            
                //4.按照字典key来取值，如果Key错误，会返回nil
                let url = URL(string: dict["thumbnail_pic"]!)
                
                //5.相信服务器一定会返回一个value, 因为前面几步已经!
                thumbnail_pic?.append(url!)
            
            }
        }
    }
    
    var description: String {
        return status.description + "配图数图 \(thumbnail_pic ?? [] as Array)"
    }
}
